Unlike a normal integrated circuit in which all circuits are fixed at the time of manufacture, a programmable logic device (PLD) is a device that can function with an intended circuit structure set by a user at the time of actual use after shipment. Examples of such devices that are programmable by users are a small-scale programmable array logic (PAL) and generic array logic (GAL) and a large-scale complex programmable logic device (CPLD) and field programmable gate array (FPGA); in this specification, such devices are collectively called a programmable logic device (hereinafter referred to as PLD).
PLDs have advantages such as a short development period and flexibility in changing design specifications over conventional application specific integrated circuits (ASIC). Thus, the use of PLDs for semiconductor devices has been promoted in recent years.
A PLD is composed of, for example, a plurality of programmable logic elements (also referred to as logic blocks) and wirings between the programmable logic elements. A function of the PLD can be changed by changing a function of the programmable logic elements. Moreover, a function of the PLD can be changed by changing an electrical connection relation between programmable logic elements.
The programmable logic element is composed of a lookup table (LUT) and a multiplexer, for example. A function of the programmable logic element can be specified by setting a given value in a memory element that stores data of the lookup table. Further, a function of the programmable logic element can be specified by setting a given value in a memory element that stores information on selection of signals input to the multiplexer.
The wirings between the programmable logic elements are constituted using, for example, a connection switch capable of controlling connections between plural wirings and plural wirings. The electrical connection relation of the wirings between the programmable logic elements can be specified by setting a given value in a memory element that stores data on the on/off state of the connection switch.
The aforementioned information including the data of a lookup table, the information on selection of signals input to a multiplexer, and the data on the on/off state of a connection switch is referred to as configuration data, for example. A memory element storing configuration data is referred to as a configuration memory. Setting configuration data in a configuration memory is called “configuration”. In particular, setting new configuration data (updating configuration data) in a configuration memory is called “reconfiguration”. The circuit structure of the PLD can be changed into a circuit structure suitable for a user's request by producing (programming) desired configuration data and performing the configuration.
The PLD generally performs configuration (static configuration) while the operation of a semiconductor device including the PLD is stopped. In contrast, to further exploit the features of the PLD, a technique of performing configuration (dynamic configuration) while the semiconductor device operates has attracted attention. Specifically, plural pieces of configuration data corresponding to a plurality of circuit structures (contexts) are prepared, and circuit functions are switched. Such a PLD can be called a multi-context PLD.
For dynamic configuration in Patent Document 1, each piece of configuration data corresponding to a plurality of circuit structures is stored at a different address in a dynamic random access memory (DRAM), and a configuration memory is composed of a static random access memory (SRAM). Patent Document 1 suggests a method of performing configuration in a short time by reading configuration data on a desired circuit structure from the address of the DRAM and writing the configuration data into the SRAM, which is the configuration memory.